package top.itpath.admin.service;

import com.baomidou.mybatisplus.extension.service.IService;
import top.itpath.admin.entity.SysMenu;
import top.itpath.admin.entity.SysRoleMenu;

import java.util.Collection;
import java.util.List;
import java.util.Set;

/**
 * @author zhaomengru
 * create by  2023/10/11 - 13:45
 */
public interface ISysRoleMenuService extends IService<SysRoleMenu> {

    /**
     * 根据角色ID获取菜单列表
     *
     * @param roleId 角色ID
     * @return 菜单列表
     */
    default List<SysMenu> listRoleMenu(Long roleId) {
        return listRoleMenu(List.of(roleId));
    }

    List<SysMenu> listRoleMenu(Collection<Long> roleId);

    /**
     * 根据角色ID获取权限列表
     *
     * @param roleId 角色ID
     * @return 权限列表
     */
    Set<String> listRolePermissions(Collection<Long> roleId);


    default Set<String> listRolePermissions(Long roleId) {
        return listRolePermissions(List.of(roleId));
    }

    /**
     * 设置角色权限
     *
     * @param roleId  角色ID
     * @param menuIds 菜单ID列表
     */
    void setPermission(Long roleId, List<Long> menuIds);
}
